package cn.cdutetc.library.entity.pojo;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * 通知实体类
 */
@Data
@TableName("notification")
public class Notification implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 通知ID
     */
    @TableId(value = "notify_id", type = IdType.AUTO)
    private Integer notificationId;

    /**
     * 接收用户ID
     */
    private Integer userId;

    /**
     * 通知类型：1-系统通知，2-借阅提醒，3-还书提醒，4-逾期提醒，5-罚款通知
     */
    @TableField("notify_type")
    private String notifyType;

    /**
     * 通知标题
     */
    private String title;

    /**
     * 通知内容
     */
    private String content;

    /**
     * 相关业务ID，如借阅ID
     */
    @TableField(exist = false)
    private Integer businessId;

    /**
     * 通知方式：email/system（与表字段 notify_way 对齐）
     */
    @TableField("notify_way")
    private String notifyWay;

    /**
     * 发送时间（表字段 send_time）
     */
    @TableField("send_time")
    private LocalDateTime sendTime;

    /**
     * 阅读状态：unread/read（表字段 read_status）
     */
    @TableField("read_status")
    private String readStatus;

    /**
     * 以下字段在当前表结构中不存在，标记为非持久化
     */
    @TableField(exist = false)
    private Integer priority;

    /**
     * 是否已读（旧字段兼容）
     */
    @TableField(exist = false)
    private Boolean isRead;

    /** 阅读时间（旧字段兼容） */
    @TableField(exist = false)
    private LocalDateTime readTime;

    /** 创建时间（旧字段兼容） */
    @TableField(exist = false)
    private LocalDateTime createTime;

    /** 更新时间（旧字段兼容） */
    @TableField(exist = false)
    private LocalDateTime updateTime;
}